#ifndef __POINTER_H__
#define __POINTER_H__

#include <memory>
#include <unordered_map>

struct Node
{
    int data;
    std::shared_ptr<Node> child;
    std::weak_ptr<Node> parent;

    Node(const int value) : data(value), child(nullptr) {}
};

struct Scene
{
    std::unordered_map<uint64_t, std::shared_ptr<Node>> tree;
};

void testSharedPtr();

void testScene();

#endif  //__POINTER_H__